package concurent

import "fmt"

func IterChan_f1() {
	// 无缓存通道
	c := make(chan int)
	// 开启一个协程  匿名函数用于 写通道
	go func() {
		for i := 0; i < 2; i++ {
			c <- i
		}
		// 写完之后关闭
		close(c)
	}()

	//  如果通道关闭，读多写少，没有了就是默认值，例如，int 就是0，如果没有关闭就会死锁。
	/* for i := 0; i < 3; i++ {
		r := <-c
		fmt.Printf("r: %v\n", r)
	} */

	// 只会读通道里有的数据  推荐
	for v := range c {
		fmt.Printf("v: %v\n", v)
	}

	// 死循环
	/* for {
		if data, ok := <-c; ok {
			fmt.Printf("data: %v\n", data)
		} else {
			break
		}
	} */

}
